package com.lemzdo.community.controller;

import com.lemzdo.community.dto.CommentUserDTO;
import com.lemzdo.community.dto.PostDTO;
import com.lemzdo.community.enums.CommentTypeEnum;
import com.lemzdo.community.model.Comment;
import com.lemzdo.community.model.Post;
import com.lemzdo.community.service.CommentService;
import com.lemzdo.community.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;


//我的帖子点击帖子进入编辑页面 可以对自己的帖子进行修改等操作
@Controller
public class PostController {

    @Autowired
    private PostService postService;
    @Autowired
    private CommentService commentService;

    /**
     * 进入我的帖子页面，获取帖子内容进行显示
     *  进入该页面则表示访问一次，需要对访问量+1
     * @param id 帖子id
     * @param model 视图对象 返回数据给前端
     * @return 前端页面
     */
    @RequestMapping(value = "/post/{id}")
    public String postInfo(@PathVariable Integer id, Model model){

        //取得帖子信息(带发帖人信息)
        PostDTO postDTO = postService.selectByPrimaryKey(id);

        //取得帖子对应的所有回复（即帖子的id等于回复的postId）
        // 还需要该回复的发起人的头像和名字 显示在帖子里 新定义一个commentUserDTO
        List<CommentUserDTO> commentUserDTOSs = commentService.selectAllByPostId(id,CommentTypeEnum.COMMENT_TYPE_1);

        //根据帖子的标签即帖子信息，模糊查询出相关的帖子，不包括原贴 无需发帖人信息
        List<Post> relatedPosts = postService.selectAllRelated(postDTO);

        //累加访问量
        postService.increaseView(id);

        //将帖子信息（带用户），相应的回复信息（带回复人），相关帖子信息（带发帖人）存入前端
        model.addAttribute("post",postDTO);
        model.addAttribute("comments",commentUserDTOSs);
        model.addAttribute("relatedPosts",relatedPosts);

        return "post";
    }

}
